#!/usr/bin/env python2.7
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import unittest

import chrome_perf_stats

class TestChromePerfStats(unittest.TestCase):
  def testUpdateSuccessRatesWithResult(self):
    success_rates = {}
    chrome_perf_stats._UpdateSuccessRatesWithResult(
        success_rates,
        {'count': 0},
        'invalid_date_str',
        'invalid_builder')
    self.assertDictEqual({}, success_rates)
    chrome_perf_stats._UpdateSuccessRatesWithResult(
      success_rates,
      {'count': 5, 'failure_count': 3},
      '20151010',
      'android_nexus_10')
    self.assertDictEqual(
        {'20151010': 
            {'android_nexus_10':
                {'count': 5, 'success_count': 2}
            }
        },
        success_rates)
    chrome_perf_stats._UpdateSuccessRatesWithResult(
      success_rates,
      {'count': 5, 'failure_count': 4},
      '20151010',
      'android_nexus_4')
    self.assertDictEqual(
        {'20151010': 
            {'android_nexus_10':
                {'count': 5, 'success_count': 2},
             'android_nexus_4':
                {'count': 5, 'success_count': 1}
            }
        },
        success_rates)
    chrome_perf_stats._UpdateSuccessRatesWithResult(
      success_rates,
      {'count': 5, 'failure_count': 0},
      '20151009',
      'win_xp')
    self.assertDictEqual(
        {'20151010': 
            {'android_nexus_10':
                {'count': 5, 'success_count': 2},
             'android_nexus_4':
                {'count': 5, 'success_count': 1}
            },
        '20151009': 
            {'win_xp':
                {'count': 5, 'success_count': 5}
            }
        },
        success_rates)
  def testSummarizeSuccessRates(self):
    rates = chrome_perf_stats._SummarizeSuccessRates(
        {'20151010': 
            {'android_nexus_10':
                {'count': 5, 'success_count': 2},
             'android_nexus_4':
                {'count': 5, 'success_count': 3}
            },
        '20151009': 
            {'win_xp':
                {'count': 5, 'success_count': 5}
            }
        })
    self.assertListEqual([['20151010', 0.5], ['20151009', 1.0]], rates)

if __name__ == '__main__':
    unittest.main()